home *** CD-ROM | disk | FTP | other *** search
/ Pascal Super Library / Pascal Super Library (CW International)(1997).bin / REFERENC / TPR / TPR7.TXT < prev    next >
Text File  |  1992-10-19  |  47KB  |  1,298 lines

  1.                                    Chapter 7
  2.                                     of the
  3.                             Turbo Pascal Reference
  4.  
  5.                           The Turbo Vision Reference
  6.                                   (continued)
  7.  
  8. This chapter is part of the Turbo Pascal Reference electronic freeware book (C)
  9. Copyright 1992 by Ed Mitchell.  This freeware book contains supplementary
  10. material to Borland Pascal Developer's Guide, published by Que Corporation,
  11. 1992.  However, Que Corporation has no affiliation with nor responsibility for
  12. the content of this free book.  Please see Chapter 1 of the Turbo Pascal
  13. Reference for important information about your right to distribute and use this
  14. material freely.  If you find this material of use, I would appreciate your
  15. purchase of one my books, such as the Borland Pascal Developer's Guide or
  16. Secrets of the Borland C++ Masters, Sams Books, 1992.  Thank you.
  17.  
  18. For additional information on using Turbo Vision, including a detailed
  19. tutorial, please see Chapters 11 through 16 of the Borland Pascal Developer's
  20. Guide.
  21.  
  22.  
  23. HistoryAdd procedure
  24. ------------------------------------------------------------
  25. Declaration:  
  26.      procedure HistoryAdd
  27.      ( Id: Byte; var Str: String);
  28.  
  29. Unit:  HistList
  30.  
  31. Purpose:
  32.      This is an internal routine used by the THistory and related objects to
  33.      add a string Str to the history list identified by the Id number.
  34.  
  35.  
  36. HistoryBlock variable
  37. ------------------------------------------------------------
  38. Declaration:  
  39.      HistoryBlock: Pointer = nil;
  40.  
  41. Unit:  HistList
  42.  
  43. Purpose:
  44.      The THistory object allocates a block of memory from the heap in order to
  45.      store the history list.  HistoryBlock is set to point to this memory
  46.      block.
  47.  
  48.  
  49. HistoryCount function
  50. ------------------------------------------------------------
  51. Declaration:  
  52.      function HistoryCount(Id: Byte): Word;
  53.  
  54. Unit:  HistList
  55.  
  56. Purpose:  
  57.      The THistory history list system, and the associated history list memory
  58.      manager (See HistoryAdd, HistoryBlock, HistorySize, HistoryStr,
  59.      HistoryUsed) can manage multiple memory history lists.  The HistoryCount
  60.      function calculates and returns the number of items stored in the history
  61.      list selected by the Id value.
  62.  
  63.  
  64. HistorySize variable
  65. ------------------------------------------------------------
  66. Declaration: 
  67.      HistorySize: Word = 1024;
  68.  
  69. Unit:
  70.      HistList
  71.  
  72. Purpose:  
  73.      At program initialization, TApplication.Init calls the InitHistory
  74.      procedure to allocate history list memory space.  The default allocation
  75.      is determined by the value stored in HistorySize.  To change this value,
  76.      set HistorySize to a new size, specified in bytes, before calling
  77.      TApplication.Init.
  78.  
  79.  
  80. HistoryStr function
  81. ------------------------------------------------------------
  82. Declaration:  
  83.      function HistoryStr(Id: Byte; Index: Integer): String;
  84.  
  85. Unit:  HistList
  86.  
  87. Purpose:  
  88.      Looks into the history list specified by Id, and returns the contents of
  89.      the Index'th string in the list.
  90.  
  91.  
  92. HistoryUsed variable
  93. ------------------------------------------------------------
  94. Declaration: 
  95.      HistoryUsed: Word = 0;
  96.  
  97. Unit:  HistList
  98.  
  99. Purpose:  
  100.      This is an internal value used by the history list routines.
  101.  
  102.  
  103. InitHistory procedure
  104. ------------------------------------------------------------
  105. Declaration: 
  106.      procedure InitHistory;
  107.  
  108. Unit:  HistList
  109.  
  110. Purpose:
  111.      TApplication.Init calls this routine to initialize the history list
  112.      management system.  Also see HistorySize and THistory.
  113.  
  114.  
  115. InputBox function      
  116. ------------------------------------------------------------ 
  117. Declaration:
  118.                function InputBox (Title : String;
  119.                                  ALabel : String;
  120.                                  var S : String;
  121.                                  Limit : Byte ) : Word;
  122.  
  123. Unit:          MsgBox, source code in \TP\TVDEMOS\MSGBOX.PAS
  124.  
  125. Purpose:
  126.      InputBox is not described in the Borland documentation but is contained in
  127. the file MSGBOX.PAS (and MSGBOX.TPU) contained in the \TP\TVDEMOS directory (TP
  128. 6.0).
  129.      InputBox displays a simple dialog with a single label and input field,
  130. plus Okay and Cancel buttons.  The Title parameter becomes the dialog box
  131. title, and the input field is given ALabel as a prompt line.  The input field
  132. is set to Limit bytes in length.  InputBox returns eithe cmOkay or cmCancel. 
  133. See Listing DMSGBOX3.PAS for an example of using the message box.
  134.    1  { DMSGBOX3.PAS
  135.    2    Demonstrates use of InputBox
  136.    3  }
  137.    4  procedure TShell.DemoInputBox;
  138.    5  var
  139.    6    Control : Word;
  140.    7  begin
  141.    8    Control := InputBox('The Title', 'Enter some text:',
  142.                FileName, 30);
  143.    9  end; { TShell.DemoInputBox }
  144.  
  145. See:  MessageBox, InputBoxRect, MessageBoxRect for related functions.
  146.  
  147.  
  148.  
  149. InputBoxRect function
  150. ------------------------------------------------------------ 
  151. Declaration:
  152.                function InputBox (var Bounds : TRect;
  153.                                  Title : String;
  154.                                  ALabel : String;
  155.                                  var S : String;
  156.                                  Limit : Byte ) : Word;
  157.  
  158. Unit:          MsgBox, source code in \TP\TVDEMOS\MSGBOX.PAS
  159.  
  160. Purpose:
  161.      InputBoxRect is not described in the Borland documentation but is
  162. contained in the file MSGBOX.PAS (and MSGBOX.TPU) contained in the \TP\TVDEMOS
  163. directory (TP 6.0).
  164.      InputBoxRect is identical to InputBox except that you can specify a
  165. bounding rectangle in order to position and size the input box to specific
  166. coordinates.  See also MessageBoxRect.
  167.  
  168. See:  InputBox, MessageBox, MessageBoxRect
  169.  
  170.  
  171. InitEvents procedure
  172. ------------------------------------------------------------
  173. Declaration:  
  174.      procedure InitEvents;
  175.  
  176. Unit: Drivers;
  177.  
  178. Purpose:
  179.      This internal procedure initializes Turbo Vision's event manager, and
  180.      initializes and displays the mouse, if installed.   InitEvents is
  181.      automatically called by TApplication.Init, and is terminated by calling
  182.      its corresponding DoneEvent procedure.
  183.  
  184.  
  185. InitMemory procedure
  186. ------------------------------------------------------------
  187. Declaration: 
  188.      procedure InitMemory;
  189.  
  190. Unit:  Memory
  191.  
  192. Purpose:
  193.      This internal procedure initialize's Turbo Vision's memory management
  194.      system and is automatically called by TApplication.Init.  InitMemory is
  195.      terminated by calling its corresponding DoneMemory.
  196.  
  197.  
  198. InitSysError procedure
  199. ------------------------------------------------------------
  200. Declaration:  
  201.      procedure InitSysError;
  202.  
  203. Unit:  Drivers
  204.  
  205. Purpose:
  206.      This internal procedure, called by TApplication.Init, initializes system
  207.      error trapping by redirecting the interrupt vectors 09H, 1BH, 21H, 23H,
  208.      and 24H and clearing DOS's Ctrl-Break state.  System error trapping is
  209.      terminated by calling the corresponding DoneSysError routine.
  210.  
  211.  
  212. InitVideo procedure
  213. ------------------------------------------------------------
  214. Declaration:  
  215.      procedure InitVideo;
  216.  
  217. Unit: Drivers
  218.  
  219. Purpose:
  220.      This internal procedure, called by TApplication.Init, initialize's Turbo
  221.      Vision's video display manager and switches the display to the mode
  222.      specified in the ScreenMode variable.  InitVideo initializes the variables
  223.      ScreenWidth, ScreenHeight, HiResScreen, CheckSnow, ScreenBuffer and
  224.      CursorLines.
  225.  
  226.  
  227. kbXXXX constants
  228. ------------------------------------------------------------
  229. Keyboard constants
  230.      The kbXXXX constants are divided into two groups:  a small group for
  231. detecting keyboard shift states, and a large group as equates for the
  232. non-standard keystrokes such as function and Alt keys.
  233.  
  234. Keyboard Shift State constants
  235. Constant       Value    Usage
  236.  
  237. kbRightShift   $0001   Bit set if the right shift key down
  238. kbLeftShift    $0002   Bit set if the left shift key down
  239. kbCtrlShift    $0004   Bit set if the Ctrl key is down
  240. kbAltShift     $0008   Bit set if the Alt key is down
  241. kbScrollState  $0010   Bit set if the Scroll Lock is down
  242. kbNumState     $0020   Bit set if the Num Lock is down
  243. kbCapsState    $0040   Bit set if the Caps Lock down
  244. kbInsState     $0080   Bit set if keyboard is in Ins Lock state
  245.  
  246.      The keyboard shift state constants are used as a bit mask to test a
  247. location in low memory at $40:$17 for the status of various keyboard keys, such
  248. as the Ctrl or Shift key.  For example, to see if the keyboard is producing
  249. shifted characters, declare an absolute variable at $40:$17 and test the bits
  250. like this:
  251.      var
  252.        KeyboardShifts : Byte absolute $40:$17;
  253.      ...
  254.      if  (KeyboardShifts and
  255.       (kbRightShift or kbLeftShift or kbCapsState) ) <> 0
  256.  
  257. Keyboard Scancode Constants
  258.      Use these constants to check for specific keystroke values in the
  259. TEvent.KeyCode field.  For example,
  260.      if Event.KeyCode = kbPgDn  then
  261.       { handle page down function }
  262.       ...
  263.  
  264. Alt-Ch key code constants
  265.  
  266. Constant    Value     Constant     Value
  267.  
  268. kbAltA      $1E00     kbAltN       $3100
  269. kbAltB      $3000     kbAltO       $1800
  270. kbAltC      $2E00     kbAltP       $1900
  271. kbAltD      $2000     kbAltQ       $1000
  272. kbAltE      $1200     kbAltR       $1300
  273. kbAltF      $2100     kbAltS       $1F00
  274. kbAltG      $2200     kbAltT       $1400
  275. kbAltH      $2300     kbAltU       $1600
  276. kbAltI      $1700     kbAltV       $2F00
  277. kbAltJ      $2400     kbAltW       $1100
  278. kbAltK      $2500     kbAltX       $2D00
  279. kbAltL      $2600     kbAltY       $1500
  280. kbAltM      $3200     kbAltZ       $2C00
  281.  
  282.  
  283. Ctrl and special key code constants
  284. Constant    Value     Constant     Value
  285.  
  286. kbAltEqual  $8300     kbEnd        $4F00
  287. kbAltMinus  $8200     kbEnter      $1C0D
  288. kbAltSpace  $0200     kbEsc        $011B
  289. kbBack      $0E08     kbGrayMinus  $4A2D *
  290. kbCtrlBack  $0E7F     kbHome       $4700
  291. kbCtrlDel   $0600     kbIns        $5200
  292. kbCtrlEnd   $7500     kbLeft       $4B00 *
  293. kbCtrlEnter $1C0A     kbNoKey      $0000
  294. kbCtrlHome  $7700     kbPgDn       $5100
  295. kbCtrlIns   $0400     kbPgUp       $4900
  296. kbCtrlLeft  $7300     kbGrayPlus   $4E2B
  297. kbCtrlPgDn  $7600     kbRight      $4D00 *
  298. kbCtrlPgUp  $8400     kbShiftDel   $0700
  299. kbCtrlPrtSc $7200     kbShiftIns   $0500
  300. kbCtrlRight $7400     kbShiftTab   $0F00
  301. kbDel       $5300     kbTab        $0F09
  302. kbDown      $5000     kbUp         $4800
  303.  
  304. [*] kbGrayMinus and kbGrayPlus are the - and + keys on the numeric keypad. 
  305. kbLeft and kbRight are the arrow keys.
  306.  
  307. Alt-number key code constants
  308. Constant    Value     Constant     Value
  309. kbAlt1      $7800     kbAlt6       $7D00
  310. kbAlt2      $7900     kbAlt7       $7E00
  311. kbAlt3      $7A00     kbAlt8       $7F00
  312. kbAlt4      $7B00     kbAlt9       $8000
  313. kbAlt5      $7C00     kbAlt0       $8100
  314.  
  315. Function key code constants
  316. Constant    Value     Constant     Value
  317. kbF1                  $3B00        kbF6      $4000
  318. kbF2                  $3C00        kbF7      $4100
  319. kbF3                  $3D00        kbF8      $4200
  320. kbF4                  $3E00        kbF9      $4300
  321. kbF5                  $3F00        kbF10     $4400
  322.  
  323. Shift-function key code constants
  324. Constant    Value     Constant     Value
  325. kbShiftF1   $5400     kbShiftF6    $5900
  326. kbShiftF2   $5500     kbShiftF7    $5A00
  327. kbShiftF3   $5600     kbShiftF8    $5B00
  328. kbShiftF4   $5700     kbShiftF9    $5C00
  329. kbShiftF5   $5800     kbShiftF10   $5D00
  330.  
  331. Ctrl-function key code constants
  332. Constant    Value     Constant     Value
  333. kbCtrlF1    $5E00     kbCtrlF6     $6300
  334. kbCtrlF2    $5F00     kbCtrlF7     $6400
  335. kbCtrlF3    $6000     kbCtrlF8     $6500
  336. kbCtrlF4    $6100     kbCtrlF9     $6600
  337. kbCtrlF5    $6200     kbCtrlF10    $6700
  338.  
  339. Alt-function key codes
  340. Constant    Value     Constant     Value
  341. kbAltF1     $6800     kbAltF6      $6D00
  342. kbAltF2     $6900     kbAltF7      $6E00
  343. kbAltF3     $6A00     kbAltF8      $6F00
  344. kbAltF4     $6B00     kbAltF9      $7000
  345. kbAltF5     $6C00     kbAltF10     $7100
  346.  
  347.  
  348.  
  349. LongDiv function
  350. ------------------------------------------------------------  
  351. Declaration:  
  352.             function LongDiv( X:Longint; Y:Integer):Integer;
  353.  
  354. Unit:  Objects
  355.  
  356. Purpose:
  357.      LongDiv is an inline assembly function providing a fast implementation of
  358.      X divided by Y.
  359.  
  360.  
  361. LongMul function
  362. ------------------------------------------------------------
  363.  
  364. Declaration:  
  365.      function LongDiv( X:Integer; Y:Integer):LongInt;
  366.  
  367. Unit:  Objects
  368.  
  369. Purpose:
  370.      LongMul is an inline assembly function providing a fast implementation of
  371.      X multiplied by Y.
  372.  
  373.  
  374. LongRec type
  375. ------------------------------------------------------------ 
  376. Declaration:  
  377.                           type LongRec = record
  378.                             Lo, Hi: Word;
  379.                           end;
  380. Unit:  Objects
  381.  
  382. Purpose: Double word record type.
  383.  
  384.  
  385. LowMemory function
  386. ------------------------------------------------------------
  387. Declaration:  
  388.                           function LowMemory : Boolean;
  389. Unit:  Memory
  390. Purpose:
  391.      LowMemory returns TRUE if a memory allocation used a portion of the memory
  392.      safety pool, otherwise LowMemory returns FALSE.  Use of the memory safety
  393.      pool is described in Chapter 19.
  394.  
  395.  
  396. LowMemSize variable
  397. ------------------------------------------------------------
  398. Declaration:  
  399.     LowMemSize: Word = 4096 div 16;
  400.  
  401. Unit:  Memory
  402.  
  403. Purpose:
  404.      Specifies the size of the memory safety pool, in 16-byte paragraphs.  The
  405.      default is 4K bytes but it may be set to larger values, as needed for your
  406.      application.  See Chapter 19 for more information on using LowMemory and
  407.      LowMemSize and detecting low or out of memory conditions in your Turbo
  408.      Vision applications.
  409.  
  410.  
  411. MaxBufMem variable
  412. ------------------------------------------------------------
  413. Declaration:  
  414.     MaxBufMem : Word = 65536 div 16;
  415.  
  416. Unit:  Memory
  417.  
  418. Purpose:
  419.      Specifies the maximum memory size, in 16- byte pages, available for cache
  420.      buffers.  See also GetBufMem and FreeBufMem and the description at the end
  421.      of Chapter 13.
  422.  
  423.  
  424. MaxCollectionSize variable
  425. ------------------------------------------------------------
  426. Declaration:  
  427.     MaxCollectionSize = 65520 div SizeOf(Pointer);
  428.  
  429. Unit:  Objects
  430.  
  431. Purpose:
  432.      MaxCollectionSize sets the maximum number of elements that can be put into
  433.      a collection (which is equal to the maximum number of pointers that can
  434.      fit into a single data segment).
  435.  
  436.  
  437. MaxViewWidth constant
  438. ------------------------------------------------------------
  439. Declaration:  
  440.     MaxViewWidth = 132;
  441.  
  442. Unit:  Views
  443.  
  444. Purpose:
  445.     Determines the maximum width of a view.
  446.  
  447.  
  448. mbXXXX constant
  449. ------------------------------------------------------------
  450. Mouse Button constants
  451.  
  452. Unit:  Drivers
  453.  
  454. Purpose:
  455.      The mbXXXX constants are used to test the Event.Buttonsfield of a TEvent
  456.      record or the MouseButtons variable to determine if the left or right
  457.      button was pressed.
  458.  
  459. Constant       Value   Usage
  460. mbLeftButton   $01     Value if left button was pressed.
  461. mbRightButton  $02     Value if right button was presseed.
  462.  
  463. See: MouseButtons, TEvent
  464.  
  465.  
  466. MemAlloc function
  467. ------------------------------------------------------------
  468. Declaration:   
  469.      function MemAlloc( Size: Word): Pointer;
  470. Unit:          Memory
  471. Purpose:
  472.      Like the System library routine GetMem, MemAlloc attempts to allocate a
  473. block of size bytes from the memory heap, returning a pointer to the allocated
  474. memory block  However, unlike GetMem, MemAlloc will not allow an allocation
  475. from the low memory safety pool.  Instead, MemAlloc will generate a Heap
  476. Overflow error if it needs to access the safety pool.
  477.      Note that the Borland Object Reference description of this routine is
  478. incorrect:  Borland's manual states that MemAlloc returns Nil if it runs out of
  479. memory.  That is not the default operation and will only operate that way if
  480. you set the HeapError variable to point to a HeapFunc that returns a value of
  481. 1.  Listing MEMALLOC.PAS illustrates how to do this.  
  482.    1  {  MEMALLOC.PAS
  483.    2     Demonstrates use of the Turbo Vision MemAlloc function.
  484.    3  }
  485.    4  Program DemoMemAlloc;
  486.    5  uses
  487.    6      Memory;
  488.    7  label 99;
  489.    8  var
  490.    9     APointer  : Pointer;
  491.   10     I : Integer;
  492.   11  
  493.   12  function HeapFunc(Size : Word): Integer; far;
  494.   13  { Returns 1 = force memory manager to return NIL on out of memory
  495.   14    set to alternate values as shown:
  496.   15            0 = force a Heap Overflow error
  497.   16            2 = tells the memory manger to try again (for instance,
  498.   17                you might dispose of some items in this routine, thereby
  499.   18                freeing up some memory)
  500.   19  }
  501.   20  begin
  502.   21  
  503.   22    HeapFunc := 1;
  504.   23  
  505.   24  end;
  506.   25  
  507.   26  
  508.   27  begin
  509.   28    { Initialize the Heap Overflow checker }
  510.   29    HeapError := @HeapFunc;
  511.   30  
  512.   31    { Allocate some blocks of memory until running out of free space.
  513.   32      You may have to use a value higher than 20 or a larger block size }
  514.   33    for i:=1 to 20 do
  515.   34    begin
  516.   35      APointer := MemAlloc(20000);
  517.   36  
  518.   37      writeln(longint(Apointer));
  519.   38      if  APointer = NIL  then
  520.   39      begin
  521.   40         writeln('OUT OF MEMORY');
  522.   41         Goto 99;
  523.   42      end;
  524.   43  
  525.   44      Write('Press Enter to continue');
  526.   45      readln;
  527.   46    end;
  528.   47  
  529.   48  99:
  530.   49    Write('Program completed.  Press Enter to continue');
  531.   50    Readln;
  532.   51  
  533.   52  end.
  534.  
  535. Use FreeMem to dispose of the allocated block.
  536. Related items:  New, GetMem, Dispose, FreeMem, MemAllocSeg
  537.  
  538.  
  539.  
  540. MemAllocSeg function
  541. ------------------------------------------------------------ 
  542. Declaration:   
  543.      function MemAllocSeg( Size : Word): Pointer;
  544. Unit:                  Memory
  545. Purpose:
  546.      MemAllocSeg is identical to MemAlloc except that MemAllocSeg forces the
  547.      offset value of the segment:offset pointer it returns, to be zero.  This
  548.      insures that the memory allocation is always made on an even 16-byte or
  549.      segment page boundary.
  550.  
  551.  
  552. MenuBar variable
  553. ------------------------------------------------------------ 
  554. Declaration:
  555.      MenuBar: PMenuView = nil;
  556.  
  557. Unit:                  App
  558. Purpose:
  559.      MenuBar is initialized by TProgram.InitMenuBar (via
  560.      TApplication.InitMenuBar, which you override in your program when
  561.      initializing the pulldown menus) to point to your application's menu bar. 
  562.      The default value of Nil indicates that no menu bar is defined for the
  563.      application.  See the examples in the "Turbo Vision Tutorial", Chapter 11
  564.      in the Borland Pascal Developer's Guide.
  565.  
  566.  
  567. Message function
  568. ------------------------------------------------------------
  569. Declaration:   function Message( Receiver: PView;
  570.                        What, Command : Word;
  571.                        InfoPtr : Pointer): Pointer;
  572. Unit:                  Views;
  573. Purpose:
  574.      Use Message to send messages between views.  Message creates an evCommand
  575.      event record using the parameters What, Command and InfoPtr and attempts
  576.      to invoke Receiver^.HandleEvent to process the event.  If
  577.      Receiver^.HandleEvent successfully handles the event then the Message
  578.      returns Event.InfoPtr from the processed message (which is a pointer to
  579.      the object that handled the message). Otherwise, if the event was not
  580.      handled, Message returns NIL.
  581.                When using Message, the InfoPtr parameter may be used for most
  582.      any purpose.  For example, to pass a block of data to the recepient, set
  583.      this parameter to point to a data record.  If you wish to let the
  584.      recepient of the message know who sent the message, set InfoPtr to @Self.
  585.                The message facility is used for many purposes.  One example is
  586.      a list box and a vertical scroll bar.  Whenever the scroller position is
  587.      adjusted (using the mouse or keyboard controls), the scroller sends a
  588.      message informing the world that it has changed,
  589.                Message( TopView, evBroadcast,
  590.                         cmScrollBarChanged, @Self );
  591.      where TopView is a TView function returning a pointer to the current modal
  592.      view (hence, the view that owns the scrollbar), and cmScrollBarChanged is
  593.      a standard message broadcast to the rest of the views informing the world
  594.      that it has changed.  TopView^.HandleEvent looks at the cmScrollBarChanged
  595.      message and passes it along to its subviews.  Eventually, the list box
  596.      view receives and processes the message at its HandleEvent method, causing
  597.      the listbox cursor to move up or down, or for the contents of the list box
  598.      to be redrawn.
  599.  
  600.  
  601. MessageBox function
  602. ------------------------------------------------------------ 
  603. Declaration:   function MessageBox( Msg: String;
  604.                        Params: Pointer;
  605.                        AOptions : Word) : Word;
  606.  
  607. Unit:          MsgBox, source in file \TP\TVDEMOS\MSGBOX.PAS
  608.  
  609. Purpose:
  610.      MessageBox is not described in the Borland documentation but is provided
  611. in the file MSGBOX.PAS in the \TP\TVDEMOS directory (TP 6.0).
  612.      MessageBox displays a string within a dialog box, inserting optional
  613. Params parameters, as desired, and displays optional Okay, Cancel, Yes or No
  614. buttons depending upon the settings of the AOptions parameter.  This function
  615. is useful for displaying error and warning messages.
  616.      The Msg string and the Params parameter are both passed to the FormatStr
  617. procedure for formatting.  Because of this, you can insert variable parameters
  618. into the Msg string (see the description of FormatStr for more information on
  619. the type of formatting that may be performed).
  620.      For example, if a problem occurs renaming a file, you might display an
  621. error message using the sample code shown in Listing DMSGBOX2.PAS.
  622.    1  { DMSGBOX2.PAS
  623.    2    Demonstrates use of the MessageBox function
  624.    3  }
  625.    4  procedure TShell.DemoMessageBox;
  626.    5  
  627.    6  var
  628.    7    Control : Word;
  629.    8    ErrMsg  : Array [0..0] of Longint;
  630.    9    FileName: String;
  631.   10  
  632.   11  begin
  633.   12  
  634.   13    FileName := 'SAMPLE.TXT';
  635.   14    ErrMsg[0] := Longint(@FileName);
  636.   15    Control := MessageBox ('Problem renaming %s', @ErrMsg,
  637.   16                                 mfError or mfOKButton or mfCancelButton );
  638.   17  
  639.   18  end; { TShell.DemoMessageBox }
  640.   19  
  641.   20  
  642.  
  643.      The ErrMsg array is set to point to the filename parameter that will be
  644. inserted into the message string (as per FormatStr usage).  
  645.      The AOptions values select the type of message box to display and the 
  646. type of buttons to display in the message box.  Select only one Message box
  647. type, and or it with the button types shown in the Button flags table.
  648.      The MessageBox function returns either cmOkay, cmCancel, cmYes or cmNo.
  649.  
  650. Table of Message Box Types
  651. Constant       Value   Usage
  652. mfWarning      $0000   Display a warning type message box
  653. mfError        $0001   Display an error type message box
  654. mfInformation  $0002   Display an Information box
  655. mfConfirmation $0003   Display a confirmation box
  656.  
  657. Table of Button flags
  658. Constant       Value   Usage
  659. mfYesButton    $0100   Show a Yes button
  660. mfNoButton     $0200   Show a No button
  661. mfOkButton     $0400   Show an Okay button
  662. mfCancelButton $0800   Show a Cancel button
  663. mfYesNoCancel          Show a Yes, No and a Cancel button
  664. mfOkCancel             Show an Okay and a Cancel button
  665.  
  666. IMPORTANT
  667.      MessageBox only works within Turbo Vision applications.  Do not attempt to
  668.      use MessageBox in non-Turbo Vision applications.
  669.      See:  FormatStr, MessageBoxRect, TStaticText
  670.  
  671.  
  672.  
  673. MessageBoxRect function
  674. ------------------------------------------------------------ 
  675. Declaration: function MessageBoxRect ( var R : TRect;
  676.                                  Msg : String;
  677.                                  Params : Pointer;
  678.                                  AOptions : Word ): Word;
  679.  
  680. Unit:          MSGBOX, source code in \TP\TVDEMOS\MSGBOX.PAS
  681.  
  682. Purpose:
  683.      MessageBoxRect is identical to MessageBox, except that you can specify a
  684. specific location and size for the message box using the R parameter.  For
  685. example,
  686.      R.Assign (5, 5, 60, 10);
  687.      Control := MessageBoxRect( R, 'Problem Renaming %s',
  688.                        @ErrMsg, mfError or mfCancel );
  689.  
  690. See:  MessageBox
  691.  
  692.  
  693. MinWinSize variable
  694. ------------------------------------------------------------ 
  695. Declaration:   MinWinSize : TPoint = (X: 16; Y: 6);
  696.  
  697. Unit:                  Views
  698.  
  699. Purpose:
  700.      MinWinSize sets the minimum allowed width and height for all objects
  701.      descended from TWindow.  The default is 16 characters wide and 6
  702.      characters high (including the shadow).  You can see how these values are
  703.      used by sizing an editor window in the IDE to the minimum size.
  704.  
  705.  
  706. MouseButtons variable
  707. ------------------------------------------------------------ 
  708. Declaration:   MouseButtons : Byte;
  709.  
  710. Unit:                  Drivers
  711.  
  712. Purpose:
  713.      Contains the current state of the mouse buttons.  See the mbXXXX constants
  714.      for the bit settings in this variable.
  715.  
  716.  
  717. MouseEvents variable
  718. ------------------------------------------------------------ 
  719. Declaration:   
  720.      MouseEvents : Boolean = False;
  721.  
  722. Unit:                  Drivers
  723.  
  724. Purpose:
  725.      The InitEvents procedure detects the prescence of a mouse, and if a mouse
  726.      is found, sets MouseEvents to True.  If no mouse is found, then
  727.      MouseEvents is set to False and no mouse event processing occurs.
  728.  
  729.  
  730. MouseIntFlag variable
  731. ------------------------------------------------------------ 
  732. Declaration:
  733.      MouseIntFlag : Byte;
  734.  
  735. Unit:                  Drivers
  736.  
  737. Purpose:
  738.      This is an internal variable used by Turbo Vision.
  739.  
  740.  
  741. MouseReverse variable
  742. ------------------------------------------------------------ 
  743. Declaration:
  744.      const MouseReverse : Boolean = FALSE;
  745. Unit: Drivers
  746. Purpose:
  747.      When set to TRUE, this field causes the TEvent.Buttons field to reverse
  748.      the mbLeftButton and mbRightButton flags. 
  749.  
  750.  
  751. MouseWhere variable
  752. ------------------------------------------------------------
  753. Declaration:
  754.      MouseWhere: TPoint;
  755. Unit:                  Drivers
  756. Purpose:
  757.      This TPoint-typed variable is set by the mouse interrupt handler and
  758.      contains the coordinates of the mouse in global or screen coordinates. 
  759.      Youcan convert the coordinates to view or window relative coordinates
  760.      using the TView.MakeLocal procedure.
  761.  
  762.  
  763. MoveBuf procedure
  764. ------------------------------------------------------------
  765. Declaration:   procedure MoveBuf( var Dest;
  766.                                  var Source;
  767.                                  Attr : Byte;
  768.                                  Count : Word );
  769. Unit:          Objects
  770.  
  771. Purpose:
  772.      MoveBuf is typically used for copying text and video attribute bytes to a
  773.      TDrawBuffer-type array.  Such an array holds character bytes in the low
  774.      bytes of each word, and attribute values in the high bytes.  MoveBuf
  775.      copies Count bytes from Source into the low bytes of the Dest destination
  776.      parameter, setting each high byte to the Attr byte value (or leaving the
  777.      attribute bytes as is if Attr equals zero).
  778.      See:  MoveChar, TDrawBuffer, TView.WriteBuf and TView.WriteLine.
  779.  
  780.  
  781. MoveChar procedure
  782. ------------------------------------------------------------
  783. Declaration:   procedure MoveChar( var Dest: C: Char;
  784.                                  Attr: Byte;
  785.                                  Count : Word);
  786.  
  787. Unit:          Objects
  788.  
  789. Purpose:
  790.      Similar to MoveBuf, except that this copies the single character C, Count
  791.      number of times, into each low byte of the Dest parameter (which should be
  792.      a TDrawBuffer type), and if Attr is non-zero, copies Attr to each high
  793.      byte position in the array of words.  
  794.      See:  MoveBuf,  TDrawBuffer, TView.WriteBuf and TView.WriteLine. 
  795.  
  796.  
  797. MoveCStr procedure
  798. ------------------------------------------------------------
  799. Declaration:   
  800.      procedure MoveCStr( var Dest; Str: String; Attrs: Word);
  801.  
  802. Unit:          Objects
  803.  
  804. Purpose:
  805.      MoveCStr copies a string to a TDrawBuffer array such that the text is
  806. alternately one of two different colors.   MoveCStr copies the Str string
  807. parameter to the Dest (a TDrawBuffer array) and sets each character's
  808. attributes using either the low or high byte of the Attr word.  Initially,
  809. MoveCStr uses the low byte of Attr, but upon encountering a "~" tilde
  810. character, MoveCStr switches to the high byte of Attr.  Each tilde in the
  811. string causes MoveCStr to toggle to the other Attr attribute byte.  MoveCStr is
  812. used by Turbo Vision for setting up pulldown menu strings where the hot keys
  813. are set off in a different color from the rest of the text.  For example, 
  814.  
  815.      NewSubMenu('~R~un', hcNoContext, NewMenu( ...
  816.  
  817. You use MoveCStr like this:
  818.  
  819.      var
  820.        ABuffer : TDrawBuffer;
  821.      ...
  822.      MoveCStr( ABuffer, 'This ~is~ some text.', $0770 );
  823.      WriteLine( 10, 10,  18, 1, ABuffer );
  824.  
  825. This sets the word 'is' to the attribute $07 and the rest of the text to $70.  
  826. See: TDrawBuffer, MoveChar, MoveBuf, MoveStr, TView.WriteBuf and
  827. TView.WriteLine, see "Setting Color Palettes" in Chapter 13, "More Turbo Vision
  828. Features" in the Borland Pascal Developer's Guide, CColor,                     
  829. CMonochrome, CBlackWhite
  830.  
  831.  
  832. MoveStr procedure
  833. ------------------------------------------------------------
  834. Declaration:
  835.      procedure MoveStr( var Dest; Str: String; Attr : Byte);
  836.  
  837. Unit:          Objects
  838.  
  839. Purpose:
  840.      MoveCStr copies the Str string parameter to the Dest (a TDrawBuffer array)
  841.      and sets each character's attributes to the video attribute contained in
  842.      Attr.
  843.  
  844.      See: TDrawBuffer, MoveChar, MoveBuf, MoveStr, TView.WriteBuf and
  845.      TView.WriteLine, See "Setting Color Palettes" of Chapter 13 in the Borland
  846.      Pascal Developer's Guide, CColor, CMonochrome, CBlackWhite
  847.  
  848.  
  849. NewItem function
  850. ------------------------------------------------------------ 
  851. Declaration:   function NewItem( Name, Param : TMenuStr;
  852.                        KeyCode : Word; Command : Word;
  853.                        AHelpCtx : Word; Next : PMenuItem) :
  854.                         PMenuItem;
  855.  
  856. Unit:          Menus
  857.  
  858. Purpose:
  859.      NewItem is used to create new TMenuItem records during creation of
  860.      pulldown menus and is typically nested, passing NewItem as the Next
  861.      parameter.
  862.  
  863.      NewItem('~S~how Outline Numbering', 'F5', 0, cmOutlining,
  864.                hcNocontext, NewItem( .... ) )
  865.                                                                                
  866.      See examples and additional descriptions in Chapters 11-12 of the Borland
  867.      Pascal Developer's Guide.
  868.      See:  NewMenu, NewSubMenu, TApplication.InitMenuBar.
  869.  
  870.  
  871. NewLine function
  872. ------------------------------------------------------------ 
  873. Declaration:   function NewLine ( Next: PMenuItem) : PMenuItem;
  874. Unit:                  Menus
  875. Purpose:
  876.      Use NewLine to insert horizontal separator lines into pulldown menus.  You
  877.      can place NewLine anywhere that you would use a NewItem function.  See
  878.      Chapter 14, Turbo Vision Tutorial.
  879.      
  880.  
  881. NewMenu function
  882. ------------------------------------------------------------ 
  883. Declaration:   function NewMenu (Items: PMenuItem): PMenu;
  884.  
  885. Unit:          Menus
  886.  
  887. Purpose:
  888.      Use NewMenu to create a new pulldown menu with a menu bar initialization
  889.      statement.  See Chapter 11, "Turbo Vision Tutorial" in the Borland Pascal
  890.      Developer's Guide for an example of using this function.
  891.  
  892.  
  893. NewSItem function
  894. ------------------------------------------------------------ 
  895. Declaration:   
  896.      function NewSItem( Str : String; ANext : PSItem): PSItem;
  897.  
  898. Unit:          Dialogs
  899.  
  900. Purpose:
  901.      Use nested calls to NewSItem to create a linked list of strings.  See
  902. Listing DNEWSITM.PAS for an example.
  903.  
  904. Listing DNEWSITM.PAS
  905.    1  { DNESITM.PAS
  906.    2    Demonstrates use of NewSItem function
  907.    3  }
  908.    4  
  909.    5  Program DNEWSITM;
  910.    6  uses
  911.    7    Dialogs;
  912.    8  
  913.    9  var
  914.   10    AList : PSItem;
  915.   11    TempPtr : PSItem;
  916.   12  
  917.   13  begin
  918.   14  
  919.   15  
  920.   16    { Create a singly-linked string list using nested
  921.   17      NewSItem calls.
  922.   18    }
  923.   19    AList := NewSItem('Item 1',
  924.   20               NewSItem('Item 2',
  925.   21               NewSItem('Item 3',
  926.   22               NewSItem('Item 4', nil))));
  927.   23  
  928.   24    TempPtr := AList;
  929.   25    while  TempPtr <> Nil  do
  930.   26    begin
  931.   27      Writeln( TempPtr^.Value^ );
  932.   28      TempPtr := TempPtr^.Next;
  933.   29    end;
  934.   30  
  935.   31    Write ('Press Enter to Continue');
  936.   32    Readln;
  937.   33  
  938.   34  end.
  939.   35  
  940.  
  941. See: TSItem
  942.  
  943.  
  944. NewStatusDef function
  945. ------------------------------------------------------------ 
  946. Declaration:   function NewStatusDef( AMin, AMax: Word;
  947.                        AItems: PStatusItem; ANext: PStatusDef)
  948.                         : PStatusDef;
  949.  
  950. Unit:                  Menus
  951.  
  952. Purpose:
  953.      Use NewStatusDef, in conjunction with NewStatusKey to create an entire
  954.      status line definition.  See Chapter 11, "Turbo Vision Tutorial" in the
  955.      Borland Pascal Developer's Guide.
  956.      See:  NewStatusKey, TApplication.InitStatusLine, TStatusDef
  957.  
  958.  
  959. NewStatusKey function
  960. ------------------------------------------------------------ 
  961. Declaration:
  962.      function NewStatusKey( AText: String; AKeyCode: Word;
  963.                        ACommand: Word; ANext: PStatusItem)
  964.                          : PStatusItem;
  965.  
  966. Unit:                  Menus
  967.  
  968. Purpose:
  969.      Use NewStatusKey, in conjunction with NewStatusDef to create a status line
  970.      definition.  If  AText is a null string, then the status item is hidden
  971.      (for example, the IDE uses the hidden F10 key to activate the pull down
  972.      menus).  AKeyCode is one of the kbXXXX constants and ACommand is a Turbo
  973.      Vision or user defined cmXXXX command constant.  The last parameter ANext
  974.      is used to nest multiple calls to NewStatusKey in order to create an
  975.      entire status line in a single statement.  See Chapter 11, "Turbo Vision
  976.      Tutorial" in the Borland Pascal Developer's Guide for details about using
  977.      this function.
  978.      See:  NewStatusDef, TApplication.InitStatusLine, TStatusDef
  979.  
  980.  
  981. NewStr function
  982. ------------------------------------------------------------ 
  983. Declaration:   function NewStr(S : String): PString;
  984.  
  985. Unit:          Objects
  986.  
  987. Purpose:
  988.      Use NewStr to dynamically a string variable.  NewStr is especially useful
  989.      for creating arrays or collections of strings.  See listing, below, for an
  990.      example of an array of strings.  Always use DisposeStr to dispose a
  991.      PString object created with NewStr. 
  992.  
  993. Sample code:
  994.   var
  995.        AStrArray : Array[0..100] of PString;
  996.         ...
  997.      for I := 0  to 100  do
  998.      begin
  999.        Readln(InFile, AWord);
  1000.        AStrArray[I] := NewStr(AWord);
  1001.      end;
  1002.  
  1003.      for I:=0 to 100 do
  1004.        Writeln( AStrArray[I]^ );
  1005.  
  1006. See: DisposeStr, Chapter 14,"Collections" in the Borland Pascal Developer's
  1007. Guide.
  1008.  
  1009.  
  1010. NewSubMenu function
  1011. ------------------------------------------------------------ 
  1012. Declaration:   function NewSubMenu( Name: TMenuStr;
  1013.                        AHelpCtx: Word;
  1014.                        SubMenu: PMenu;
  1015.                        Next: PMenuItem) : PMenuItem;
  1016.  
  1017. Unit:                  Menus
  1018.  
  1019. Purpose:
  1020.      NewSubMenu creates an individual pulldown menu within the menu bar
  1021.      initialization.  See Chapter 11, "Turbo Vision Tutorial" in the Borland
  1022.      Pascal Developer's Guide for examples of menu creation.
  1023.      See:      NewItem, NewMenu, NewLine
  1024.  
  1025.  
  1026. ofXXXX constants
  1027. ------------------------------------------------------------
  1028. TView.Options field bit positions
  1029.  
  1030. Purpose:
  1031.      The ofXXXX constants select options available in all TView-derived
  1032.      objects.  Setting the bit position to a 1 sets the indicated attribute;
  1033.      clearing the bit position to 0 disables the indicated attributes.
  1034.  
  1035. Constant       Value   Usage
  1036. ofSelectable   $0001   If this bit is set, then the view can be
  1037.                       selected with a mouse.  While most views are normally
  1038.                       selectable, this bit gives the option to make the item
  1039.                       unselectable.  An example of an unselectable view is
  1040.                       TStaticText items.
  1041.  
  1042. ofTopSelect    $0002   When set, this view will move to the  
  1043.                       topmost view whenever it is selected.  This option should
  1044.                       normally be set only for window objects.
  1045.  
  1046. ofFirstClick   $0004   When a mouse click is used to select a
  1047.                       view, the click can be optionally passed to the view
  1048.                       after it is selected.  For example, within a dialog box,
  1049.                       if you click on a button, you not only wish to set the
  1050.                       focus to that button, but you probably also want to
  1051.                       activate the button at the same time.
  1052.  
  1053. ofFramed       $0008   When set, the view has visible frame drawn
  1054.                       around it.
  1055.  
  1056. ofPreProcess   $0010   This option enables views other than the
  1057.                       focused view to have a chance at processing an event. 
  1058.                       Normally, events are passed down the focus-chain,
  1059.                       however, events are also sent to any subviews (in
  1060.                       Z-order) that have this bit set, giving them a chance to
  1061.                       process the event.  See Chapter 13, "More Turbo Vision
  1062.                       Features" in the Borland Pascal Developer's Guide.
  1063.  
  1064. ofPostProcess  $0020   When this bit is set, subviews are given a
  1065.                       chance after the focused view, to process events that
  1066.                       have not yet cleared.
  1067.  
  1068. ofBuffered     $0040   Views can optionally store an image of
  1069.                       themselves in a memory buffer.  When the view needs to be
  1070.                       redrawn on the screen, it can  rapidly copy itself from
  1071.                       the buffer, rather than recreate the drawing on the
  1072.                       screen.  To enable cache buffering of the view's
  1073.                       displayable image, set the ofBuffered bit to on.  The
  1074.                       buffers are stored in special, disposable memory caches. 
  1075.                       When the memory manager runs out of memory, these cache
  1076.                       buffers are automatically deleted to free up more memory
  1077.                       space, and the view's recreate their displayable images
  1078.                       as they would without the ofBuffered option.
  1079.                             If you set the ofBuffered option, be sure to call
  1080.                       the TGroup method's Lock and Unlock to prevent copying of
  1081.                       the screen image to the display until all of the
  1082.                       subview's have drawn themselves.
  1083.                       See also:  GetBufMem, FreeMem
  1084.  
  1085. ofTileable     $0080   Generally, you will want window objects to
  1086.                       be either tileable or cascadeable so that the desktop can
  1087.                       automatically rearrange the windows, if desired.  If you
  1088.                       wish to disable this function for a particular view,
  1089.                       clear this bit position in the Options field.  When
  1090.                       disabled, the view will not move on the screen, even if
  1091.                       other views become tiled or cascaded.  See also: 
  1092.                       TDeskTop.Cascade, TDeskTop.Tile.
  1093.  
  1094. ofCenterX      $0100   When this bit is set, the insertion of the
  1095.                       view causes the view to be horizontally centered.
  1096.  
  1097. ofCenterY      $0200   When this bit is set, a view is centered
  1098.                       in the vertical direction (especially useful when
  1099.                       switching between 25 and 43/50 line modes).
  1100.  
  1101. ofCentered     $0300   Same as setting both ofCenterX and
  1102.                       ofCenterY:  centers the view in both vertical and
  1103.                       horizontal directions.
  1104.  
  1105.  
  1106. PChar type
  1107. ------------------------------------------------------------ 
  1108. Declaration:   PChar = ^Char;
  1109.  
  1110. Unit:          Objects
  1111.  
  1112.  
  1113. PositionalEvents variable
  1114. ------------------------------------------------------------ 
  1115. Declaration:   
  1116.      PositionalEvents: Word = evMouse;
  1117.  
  1118. Unit:          Views
  1119.  
  1120. Purpose:
  1121.      You can force events and messages to route as if they are positional
  1122.      events by setting PositionalEvents to the event's evXXXX constant.  By
  1123.      adding your own event classes (by setting the bit patterns) you can create
  1124.      broadcast messages that route the same as a positional event.
  1125.      See: FocusedEvents, Chapter 13, "More Turbo Vision Features" in the
  1126.      Borland Pascal Developer's Guide.
  1127.  
  1128.  
  1129. PrintStr procedure
  1130. ------------------------------------------------------------ 
  1131. Declaration:   procedure PrintStr(S : String);
  1132.  
  1133. Unit:          Drivers
  1134.  
  1135. Purpose:
  1136.      Writes the string S to the screen.  You might wish to use this procedure
  1137.      in place of the Pascal Write function, since PrintStr calls a DOS function
  1138.      directly, thereby eliminating the need to link in the much larger Turbo
  1139.      Pascal file I/O library routines.
  1140.  
  1141.  
  1142. PString type
  1143. ------------------------------------------------------------ 
  1144. Declaration:   PString = ^String;
  1145.  
  1146. Unit:          Objects
  1147.  
  1148.  
  1149.  
  1150. PtrRec type
  1151. ------------------------------------------------------------ 
  1152. Declaration:   PtrRec = record
  1153.                  Ofs, Seg : Word;
  1154.                end;
  1155.  
  1156. Unit:          Objects
  1157.  
  1158. Purpose:
  1159.      Use this type to reference the segment:offset values of a pointer
  1160.      variable.
  1161.  
  1162.  
  1163. RegisterApp procedure
  1164. ------------------------------------------------------------ 
  1165. Declaration:   procedure RegisterApp
  1166.  
  1167. Unit:          App
  1168.  
  1169. Purpose:
  1170.      Calls RegisterType to register all objects in the App unit (see below) for
  1171.      stream I/O.
  1172.      Objects registered by RegisterApp:  TBackground, TDeskTop
  1173.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1174.      Guide.
  1175.  
  1176.  
  1177. RegisterColorSel procedure
  1178. ------------------------------------------------------------
  1179. Declaration:   procedure RegisterColorSel;
  1180.  
  1181. Unit:          ColorSel     \TP\TVDEMOS\COLORSEL.PAS, ..TPU
  1182.  
  1183. Purpose:
  1184.      Calls RegisterType to register all objects in the ColorSel unit (see
  1185.      below) for stream I/O.
  1186.      Objects registered by RegisterColorSel:  TColorSelector,
  1187.      TMonoSelector, TColorDisplay, TColorGroupList, TColorItemList,
  1188.      TColorDialog
  1189.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1190.      Guide.
  1191.  
  1192.  
  1193. RegisterDialogs procedure
  1194. ------------------------------------------------------------ 
  1195. Declaration:   procedure RegisterDialogs;
  1196.  
  1197. Unit:          Dialogs
  1198.  
  1199. Purpose:
  1200.      Calls RegisterType to register all objects in the Dialogs unit (see below)
  1201.      for stream I/O.
  1202.      Objects registered by RegisterDialogs:  TDialog, TInputLine, TButton,
  1203.      TCluster, TRadioButtons, TCheckBoxes, TListBox, TStaticText, TLabel,
  1204.      THistory, TParamText
  1205.      See:      RegisterType, Chapter 15, "Streams" in the Borland Pascal
  1206.      Developer's Guide.
  1207.  
  1208.  
  1209. RegisterEditors procedure
  1210. ------------------------------------------------------------ 
  1211. Declaration:   procedure RegisterEditors;
  1212.  
  1213. Unit:          Editors, \TP\EDITORS.PAS
  1214.  
  1215. Purpose:
  1216.      Calls RegisterType to register all objects in the Editors unit for stream
  1217.      I/O.
  1218.      Objects registered by RegisterEditors:  TEditor, TMemo, TFileEditor,
  1219.      TIndicator, TFileWindow
  1220.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1221.      Guide.
  1222.  
  1223.  
  1224. RegisterMenus procedure
  1225. ------------------------------------------------------------ 
  1226. Declaration:   procedure RegisterMenus
  1227.  
  1228. Unit:          Menus
  1229.  
  1230. Purpose:
  1231.      Calls RegisterType to register all objects in the Menusunit for stream
  1232.      I/O.
  1233.      Objects registered by RegisterMenus:  TMenuBar, TMenuBox, TStatusLine
  1234.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1235.      Guide.
  1236.  
  1237.  
  1238. RegisterObjects procedure
  1239. ------------------------------------------------------------ 
  1240. Declaration:   procedure RegisterObjects
  1241.  
  1242. Unit:          Objects
  1243.  
  1244. Purpose:
  1245.      Calls RegisterType to register all objects in the Objectsunit for stream
  1246.      I/O.
  1247.      Objects registered by RegisterObjects:  TCollection,  TStringCollection
  1248.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1249.      Guide.
  1250.  
  1251.  
  1252. RegisterStdDlg procedure
  1253. ------------------------------------------------------------ 
  1254. Declaration:   procedure RegisterStdDlg;
  1255.  
  1256. Unit:          STDDLG.PAS
  1257.  
  1258. Purpose:
  1259.      Calls RegisterType to register all objects in the StdDlgunit for stream
  1260.      I/O.
  1261.      Objects registered by RegisterStdDlg:  TFileInputLine, TFileCollection,
  1262.      TFileList, TFileInfoPane, TFileDialog, TDirCollection, TDirListBox,
  1263.      TChDirDialog
  1264.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1265.      Guide.
  1266.  
  1267.  
  1268. Registertype procedure
  1269. ------------------------------------------------------------ 
  1270. Declaration:   procedure RegisterType( var S : TStreamRec );
  1271.  
  1272. Unit:          Objects
  1273.  
  1274. Purpose:
  1275.      When writing objects to a stream, you must first register the object type
  1276.      with the Stream I/O system.  Example usage:
  1277.                RegisterType( RCollection );
  1278.      registers the TCollection type using its predefined RCollection stream
  1279.      registeration record.  See Chapter 15, "Streams" in the Borland Pascal
  1280.      Developer's Guide, for a complete discussion on the use of stream I/O and
  1281.      the RegisterType procedure.
  1282.  
  1283.  
  1284. RegisterViews procedure
  1285. ------------------------------------------------------------ 
  1286. Declaration:   procedure RegisterViews
  1287.  
  1288. Unit:          Views
  1289.  
  1290. Purpose:
  1291.      Calls RegisterType to register all objects in the Viewsunit for stream
  1292.      I/O.
  1293.      Objects registered by RegisterViews:  TView,  TFrame, TScrollBar, 
  1294.      TScroller, TListViewer, TGroup, TWindow
  1295.      See: RegisterType, Chapter 15, "Streams" in the Borland Pascal Developer's
  1296.      Guide.
  1297.  
  1298.